今天要介紹的是Swift中的類別與結構。
現在,我們馬上開始!
如何建立playground,請參考Day4的文章
https://ithelp.ithome.com.tw/articles/10217428
在物件導向的語言中,類別算是基礎之一,
今天我們透過程式碼來對類別做一些基礎的介紹。
類別宣告
// 類別宣告首字大寫
class Human {
var name: String
var age: Int = 18
// 建構子
init(name: String) {
self.name = name
}
}
接者我們來看看繼承的概念
class Man : Human {
var height: Int
var weight: Int
init(name: String, height: Int, weight: Int) {
self.height = height
self.weight = weight
super.init(name: name)
}
func play() {
print("Learn Swift with play playground.")
}
}
我們有一個繼承Human的Man類別,並加入height & weight 兩個屬性
由於沒有給預設值,所以我們必須在建構子中宣告
最後再用super.init()來呼叫父類別的建構子
這邊要注意子類別的屬性要先初始化後,才能呼叫super.init(),不然會出現如下錯誤
並新增一個play()方法,關於func方法將會在後續文章進一步介紹
結構與類別有很多地方很類似,但是使用的場景與細節還是不同。
我們一樣來看看程式碼
struct Person {
var name: String
var age: Int
}
// 自動產生memberwise initializer
let person1 = Person(name: "mike", age: 18)
//struct SuperMan : Person {}
// 由於struct是value type, 因此person2的變更,不會影響person1
var person2 = person1
person2.name = "Peter"
print("person1.name: \(person1.name)")
print("person2.name: \(person2.name)")
struct無法被繼承,類別可以
struct會自動產生memberwise initializer
struct是value type, class 是 reference type
在今天的文章裡,我們介紹了結構與類別,也介紹了類別的一些基礎觀念,例如繼承...等等,想要進一步學習的讀者,可以參考文章後面的延伸閱讀。
明天Day8的文章,預計將會介紹Swift中的func方法,今天的內容就到這邊,感謝讀者們的閱讀。
https://github.com/chiron-wang/IT30_11
彼得潘的 Swift iOS App 開發問題解答集
https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86
iOS 13 & Swift 5 - The Complete iOS App Development Bootcamp - Angela Yu
https://www.udemy.com/course/ios-13-app-development-bootcamp/
深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
https://www.udemy.com/course/iphone-swift4/
心智圖軟體Xmind
https://www.xmind.net/
彼得潘的Swift程式設計入門
https://www.tenlong.com.tw/products/9789572246573
5.《The Swift Programming Language》正體中文版
https://tommy60703.gitbooks.io/swift-language-traditional-chinese/content/chapter2/01_The_Basics.html#floating-point_numbers
Apple Developer Document
https://developer.apple.com/documentation/swift/double
Apple文件的 Initialization參考
https://docs.swift.org/swift-book/LanguageGuide/Initialization.html
Swift 筆記 - Initialization 的規則:designated init 和 convenience init 的用法
http://jason9075.logdown.com/posts/285685-swift-note-initialization-rules-convenience-and-designated-initializer-usage